﻿using System;
using System.Data;
using System.Windows.Forms;
using SiGeCoPre.Presupuesto_BL;
using SiGeCoPre.Presupuesto_DTO;
using SiGeCoPre.Presupuesto_Factory;
using SiGeCoPre.Presupuesto_Util;

namespace SiGeCoPre.Presupuesto_ViewGeneral
{
    /// <summary>
    /// Formulario para enviar mail
    /// </summary>
    public partial class frmMail : Form
    {
        private static string asuntoMail = "";
        private static string adjuntoMail = "";
        private static string codigoPresupuesto = "";
        private static string usuarioMail = "";

        BLEmpleados createEmpleado = BLFactoryPresupuesto.createEmpleado();
        BLClientes createCliente = BLFactoryPresupuesto.createCliente();

        public frmMail()
        {
            InitializeComponent();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            Boolean enviado = EnvioDeMail.enviarMail(txtDesde.Text, txtPara.Text, txtCopia.Text, asuntoMail, rtbContenido.Text, adjuntoMail);
            
            if (enviado)
            {
                MessageBox.Show("Mail enviado!!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            else
            {
                MessageBox.Show("Error al intentar enviar el Mail!!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Texto.escribirLog("Error en enviarMail");
            }
         }

        /// <summary>
        /// Carga los datos del mail
        /// </summary>
        /// <param name="usuario">Usuario que envia el mail</param>
        /// <param name="asunto">Asunto del mail</param>
        /// <param name="adjunto">Archivo adjunto</param>
        /// <param name="codigo">Código del presupuesto</param>
        public void cargarDatos(string usuario, string asunto, string adjunto, string codigo)
        {
            if (!asunto.Equals(""))
            {
                asuntoMail = asunto;
                codigoPresupuesto = codigo;
                usuarioMail = usuario;
                adjuntoMail = adjunto;
            }
        }

        private void btnPara_Click(object sender, EventArgs e)
        {
            if (asuntoMail.Equals("Revisión") || asuntoMail.Equals("Aprobación"))
            {
                frmEmpleados empleados = new frmEmpleados();
                empleados.FormClosed += new FormClosedEventHandler(empleados_FormClosed);
                empleados.Show();
            }
            else
            {
                frmClientes clientes = new frmClientes();
                clientes.FormClosed += new FormClosedEventHandler(clientes_FormClosed);
                clientes.Show();
            }
            
        }

        private void empleados_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                if (!frmEmpleados.pasarUsuario().Equals(""))
                {
                    string usuario = frmEmpleados.pasarUsuario();
                    empleadosDTO em = createEmpleado.getEmpleado(usuario);
                    if (null != em)
                    {
                        txtPara.Text = em.Mail;
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
            
        }

        private void clientes_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                if (frmClientes.pasarId() != 0)
                {
                    int idCliente = frmClientes.pasarId();
                    DataTable clientes = createCliente.getAllClientes();

                    if (null != clientes)
                    {
                        String mailCliente = clientes.Select("id = " + idCliente)[0]["Nombre"].ToString();
                        txtPara.Text = mailCliente;
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
            
        }

        private void btnCopia_Click(object sender, EventArgs e)
        {
            frmEmpleados emple = new frmEmpleados();
            emple.FormClosed += new FormClosedEventHandler(emple_FormClosed);
            emple.Show();
        }

        private void emple_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                if (!frmEmpleados.pasarUsuario().Equals(""))
                {
                    string usuario = frmEmpleados.pasarUsuario();
                    empleadosDTO em = createEmpleado.getEmpleado(usuario);
                    if (null != em)
                    {
                        txtCopia.Text = em.Mail;
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
           
        }

        private string mailUsuarioActivo()
        {
            string mailActivo = "";

            try
            {
                mailActivo = createEmpleado.getEmpleado(usuarioMail).Mail;
            }
            catch (Exception ex)
            {
                mailActivo = "";
                Texto.escribirLog(ex.Message);
            }

            return mailActivo;
        }

        private void frmMail_Load(object sender, EventArgs e)
        {
            if (asuntoMail.Equals("Revisión"))
            {
                btnCopia.Visible = false;
                txtCopia.Visible = false;
                this.Text = "Revisión de Presupuesto " + codigoPresupuesto;
                asuntoMail = "Revisión de Presupuesto " + codigoPresupuesto;
                txtDesde.Text = mailUsuarioActivo();
            }
            else if (asuntoMail.Equals("Aprobación"))
            {
                btnCopia.Visible = false;
                txtCopia.Visible = false;
                this.Text = "Aprobación de Presupuesto " + codigoPresupuesto;
                asuntoMail = "Aprobación de Presupuesto " + codigoPresupuesto;
                txtDesde.Text = mailUsuarioActivo();
            }
            else
            {
                btnCopia.Visible = true;
                txtCopia.Visible = true;
                this.Text = "Envío de Presupuesto " + codigoPresupuesto;
                asuntoMail = "Envío de Presupuesto " + codigoPresupuesto;
                txtDesde.Text = mailUsuarioActivo();
            }
        }
    }
}
